<?php

/**
 * userValidator valida el usuario.
 *
 * @package    Proyecto
 * @author     Zoany Marcano
 * @author     Rosmaira Arvelo 
 * @filesource
 * @license GPL
 */

class moscaUsuarioValidator extends sfValidator {

    
    function initialize($context, $parameters = null) 
    {
        // initialize parent
        parent::initialize($context);
        
        // set defaults
        $this->getParameterHolder()->set('usuario_error', 'Invalid input');
        $this->getParameterHolder()->add($parameters);
        return true;
    }
    
    /**
      * Ejecuta la validación del usuario.
      *
      * @param value A file or parameter value/array.
      * @param error An error message reference.
      *
      * @return bool verdadero, si ha pasado con éxtio la validación, de lo contrario falso.
    */

    public function execute(&$value, &$error)
    {
        $campo_param1 = $this->getParameterHolder()->get('campo');
        $usuario = $this->getContext()->getRequest()->getParameter('usuario');

        $campo_param = $this->getParameterHolder()->get('campo_id');
        $id = $this->getContext()->getRequest()->getParameter($campo_param);

        $c = new Criteria();
        $c->add(UsuarioPeer::NOMUSUARIO, $usuario["$campo_param1"], Criteria::EQUAL);
        $user = UsuarioPeer::doSelectOne($c);

        // existe o no el mismo usuario en la DB
        if($user) {
           if(($user->getNomUsuario() == $usuario["$campo_param1"]) AND ($id ==  $user->getId())) {
            return true;
           } else {
            $error = $this->getParameterHolder()->get('usuario_error');
            return false;
           }
        } else {
            return true;
        }
    }

}

?>